﻿/************************************************************************************************************
//CamButton Class ver 2.0 erstellt am 14. Juni 2007
//
// Diese Klasse beinhaltet alle geometrischen Informationen (Rechteck) einer Hot Area des Webcambildes und
//  zusätzlich gehören noch die Ereignisfunktionen dazu. Die Klasse kann nur in Verbindung der CamButtonManager Klasse
// verwendet werden
//
// Author: Florian Weil --- http://www.derhess.de
//
// Die Klasse kann frei für nicht kommerzielle Zwecke verwendet werden. 
// Bei kommerzieller Verwendung bitte eine kurze Mail an info@derhess.de 
//

/************************************************************************************************************/

import flash.geom.Rectangle;
import flash.geom.Point;


class de.derhess.iaCam.CamButton {
	
	private var state:Boolean; // Ist die Hand über den Button oder nicht
	
	private var x:Number;
	private var y:Number;
	private var width:Number;
	private var height:Number;
	
	private var scaleFactor:Number;
	
	public var onHandOver:Function; // Solange die Hand über den Button verweilt
	public var onHand:Function; // Wenn die Hand das erste Mal über den Button geht
	public var onHandOff:Function; // Wenn die Hand den Button wieder verlässt
	
	// Konstruktor
	public function CamButton(xpos:Number,ypos:Number,breite:Number,hoehe:Number,scale:Number) {
		this.scaleFactor = 100/scale;
		
		this.x = Math.round(xpos/this.scaleFactor);
		this.y = Math.round(ypos/this.scaleFactor);
		this.width = Math.round(breite/this.scaleFactor);
		this.height = Math.round(hoehe/this.scaleFactor);
		
		this.state = false; 
	}
	
	public function move(xpos:Number,ypos:Number):Void {
		this.x = Math.round(xpos/this.scaleFactor);
		this.y = Math.round(ypos/this.scaleFactor);
	}
	
	public function changeSize(breite:Number,hoehe:Number):Void {
		this.width = Math.round(breite/this.scaleFactor);
		this.height = Math.round(hoehe/this.scaleFactor);
	}
	
	public function getPosition():Point {
		return new Point(this.x*this.scaleFactor,this.y*this.scaleFactor);
	}
	
	public function getCamButtonRect():Rectangle {
		return new Rectangle(this.x*this.scaleFactor,this.y*this.scaleFactor,this.width*this.scaleFactor,this.height*this.scaleFactor);
	}
	
	// Rechteck für die Bildanalyze
	public function getAnalyzeRect():Rectangle {
		return new Rectangle(this.x,this.y,this.width,this.height);
	}
	
	public function setState(bool:Boolean):Void {
		this.state = bool;
	}
	
	public function getState():Boolean {
		return this.state;
	}
	
	
	
}